<?php

/**
 * @author NNDUC
 * @copyright 2012
 */

class Paging
{
	var $url = NULL;               // Link trang cần phân trang
	var $totalRecords = NULL;      // Tổng số bản ghi
	var $scrollPage = 5;           //
	var $perPage = 9;              // Số bản ghi trên một trang
	var $currentPage = NULL;       // trang hiện tại
	var $start = NULL;             // Chỉ sô bản ghi bắt đầu của trang hiện tại
	var $totalPage = NULL;         // Tổng số bản ghi
	var $pageLinks = NULL;
	var $previousPage = NULL;
	var $firstPage = NULL;
	var $lastPage = NULL;
	var $nextPage = NULL;
	var $previousPageText = '<<';
	var $nextPageText = '>>';
	var $firstPageText = 'FirstPage';
	var $lastPageText = 'LastPage';
	// Tính tổng số trang
	function TotalPage($pageUrl, $totalRecords, $currentPage)
	{
		$this->url = $pageUrl;
		$this->totalRecords = $totalRecords;
		//$this -> scrollPage = $scrollPage;
		//$this -> perPage = $perPage;
		if (!is_numeric($currentPage))
		{
			$this->currentPage = 1;

		} else
		{
			$this->currentPage = $currentPage;
		}
		if ($this->currentPage == 1)
		{
			$this->start = 0;
		}else
		{
			$this->start = ($this->currentPage - 1)* $this->perPage;
		}
		$this->totalPage = ceil($this->totalRecords / $this->perPage);
	}
	// Tạo các link đến các trang
	function PageLinks($inactivePageTag, $pageUrlLast)
	{

		if ($this->totalPage <= $this->scrollPage)
		{
			if($this->totalRecords <= $this->perPage)
			{
				$loopStart = 1;
				$loopFinish = $this->totalPage;
			} else
			{
				$loopStart = 1;
				$loopFinish = $this->totalPage;
			}
		} else
		{
			if( $this->currentPage < intval(($this->scrollPage / 2) + 1))
			{
				$loopStart = 1;
				$loopFinish = $this->scrollPage;
			}else
			{
				$loopStart = $this->currentPage - intval($this->scrollPage / 2);
				$loopFinish = $this->currentPage + intval($this->scrollPage / 2);
				if ($loopFinish > $this->totalPage)
				{
					$loopFinish = $this->totalPage;
				}

			}
		}
		for ($i = $loopStart; $i <= $loopFinish; $i++)
		{
			if ($i == $this->currentPage)
			{
				$this->pageLinks.= '<span '.$inactivePageTag.'>'.$i.'</span>';
			}else
			{
				$this->pageLinks.='<span><a href="'.$this->url.$i.$pageUrlLast.'">'.$i.'</a></span>';
			}
		}
	}
	// Tạo link đến trang trước
	function PreviousPage($pageUrlLast)
	{
		if ($this->currentPage > 1)
		{
			$this->previousPage = '<span> <a href = "'.$this->url.($this->currentPage - 1).$pageUrlLast.'">'.$this->previousPageText.'</a></span>';

		}
	}
	//Tạo link đến trang tiếp theo
	function NextPage($pageUrlLast)
	{
		if( $this->currentPage < $this->totalPage)
		{
			$this->nextPage = '<span><a href="'.$this->url.($this->currentPage+1).$pageUrlLast.'">'.$this-> nextPageText.'</a></span>';
		}
	}
	//Tạo link đến trang đầu tiên
	function  FirstPage($pageUrlLast)
	{
		if ($this->currentPage > 1)
		{
			$this->firstPage = '<span><a href="'.$this-> url.'1'.$pageUrlLast.'">'.$this->firstPageText.'</a></span>';
		}
	}
	// Tạo link đến trang cuối cùng
	function LastPage($pageUrlLast)
	{
		if ($this->currentPage < $this->totalPage)
		{
			$this->lastPage = '<span><a href="'.$this->url.$this->totalPage.$pageUrlLast.'">'.$this->lastPageText.'</a></span>';
		}
	}
	// Thiêt lập các thông số ban đầu
	function PageSet($pageUrl,$totalRecords,$currentPage,$inactivePageTag,$pageUrlLast='')
	{
		$this->TotalPage($pageUrl , $totalRecords , $currentPage);
		$this->PageLinks($inactivePageTag , $pageUrlLast);
		$this->PreviousPage($pageUrlLast);
		$this->NextPage($pageUrlLast);
		$this->FirstPage($pageUrlLast);
		$this->LastPage($pageUrlLast);
	}
}